<?php
/**
 * Created by PhpStorm.
 * User: liujialiang
 * Date: 2017/8/21
 * Time: 9:42
 */
include './functions.php';
//单文件上传
//if(IS_POST){
//    p($_FILES);
//    //1.判断是否是可上传文件
//    if(!is_uploaded_file($_FILES['up']['tmp_name'])){
//        echo '不是可上传文件!';return;
//    }
//    //2.设置保存文件目录
//    $path='./up/'.date('Y-m-d',time()).'/';
//    //3.判断是否是一个存在的目录,不存在则创建
//    if(!is_dir($path)){
//        mkdir($path,777,true);
//    }
//    //4.1 获取文件扩展名
//    $extends=strrchr($_FILES['up']['name'],'.');
//    //4.2 获取文件扩展名
//    $extends=pathinfo($_FILES['up']['name']);
//    $extends=$extends['extension'];
//    //5  设置文件名
//    $file_name=time().'_'.mt_rand(0,9999).$extends;
//    //6.获取完整路径
//    $up_path=$path.$file_name;
//    //7.上传
//    if(move_uploaded_file($_FILES['up']['tmp_name'], $up_path)){
//        echo '上传成功!';
//    }else{
//        echo '上传失败!';
//    }
//}

function resetArr($arr){
    $arr=$_FILES['up']['name'];
    //空数组存放重组后的数组
    $newArr=[];
    foreach($_FILES['up']['name'] as $k=>$v){
        $newArr[]=[
            'name'=>$v,
            'type'=>$_FILES['up']['type'][$k],
            'tmp_name'=>$_FILES['up']['tmp_name'][$k],
            'error'=>$_FILES['up']['error'][$k],
            'size'=>$_FILES['up']['size'][$k],
        ];
    }
    return $newArr;
}

function filter($file,$k){
    $k=$k+1;
    $error=false;
    $allowType=['image/jpeg','image/jpg','image/png','image/gif','image/psd','image/bmp'];
    if($file['error']>0){
        switch($file['error']) {
            case 1:
                $warn = '上传文件大小超出了php.ini中的限制!';
            case 2:
                $warn = '上传文件大小超出了表单的限制!';
            case 3:
                $warn = '文件只有部分上传!';
            case 4:
                $warn = '没有文件上传!';
        }
        echo '第'.$k.'个文件出现错误,error_type:'.$file['error'].'('.$warn.')'.'<br>';
        $error=true;
    }
    if(!in_array($file['type'],$allowType)){
        echo '第'.$k.'个文件类型不正确!<br>';
        $error=true;
    }
    if($file['size']>1024*10){
        echo '第'.$k.'个文件过大,无法上传!<br>';
        $error=true;
    }
    return $error;
}

//多文件上传
if(IS_POST){
    //重组数组
    $files=resetArr($_FILES['up']);
    $count=0;

    foreach($files as $k=>$v){
        p($v);
        $error=false;
        //1.判断是否是可上传文件
        if(!is_uploaded_file($v['tmp_name'])){
            echo '不是可上传文件!';return;
        }

        $error=filter($v,$k);
        if($error){
            continue;
        }
        //2.设置保存文件目录
        $path='./up/'.date('Y-m-d',time()).'/';
        //3.判断是否是一个存在的目录,不存在则创建
        if(!is_dir($path)){
            mkdir($path,777,true);
        }
        $v['name']=htmlspecialchars($v['name']);
        //4.1 获取文件扩展名
//        $extends=strrchr($v['name'],'.');
        //4.2 获取文件扩展名
        $extends=pathinfo($v['name']);
        $extends=$extends['extension'];
        //5  设置文件名
        $file_name=time().'_'.mt_rand(0,9999).$extends;
        //6.获取完整路径
        $up_path=$path.$file_name;
        //7.上传
        if(move_uploaded_file($v['tmp_name'], $up_path)){
            echo '上传成功!<br>';
            $count++;
        }else{
            echo '上传失败!<br>';
        }

    }
echo '共'.count($files).'张图片,'.$count.'张图片上传成功!';
}
?>


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

<!--文件上传是表单一定加上enctype="multipart/form-data"属性-->
<form action="" method="post" enctype="multipart/form-data">
	文件:<input type="file" name="up[]" id="" multiple="multiple">
	<br>
	<input type="submit" value="上传">
</form>


</body>
</html>
